/*
* Creater: Truongdv
* Date:14/12/2012
* Idea: Class dung chung
*/
function Public(baseUrl,module,controller){
	this.module = module;
	this.baseUrl = baseUrl;
	this.controller = controller;
	this.urlPath = baseUrl + '/' + module + '/' + controller;//Biên public lưu tên module
	//form index
	this.indexName = controller + 'frm';
	//form update
	this.updateName = 'update-' + controller + 'frm';
	myClassPublic = this;
	this.loadding = false;
	/*
		HIển thị modal thông báo "Đang xử lý dũ liệu"
	*/
	this.statusLoad = function(string){
		//Hiện thông báo
		$('div#note-process').addClass('nq vY');   
		$('div#note-process').show();
		$('div#process').css('width','15%');		
		$('div#process').show();
		$('div#process span.v1').html(string);	

	};
	/*
		Ẩn modal thông báo "Đang xử lý dũ liệu" khi form load xong
	*/
	this.successLoad = function(){
		//Ẩn thông báo
		$('div#note-process').removeClass('vY nq');
		$('div#note-process').hide();
		$('div#process').hide();
	};
	//hiển thị image thể hiện trạng thái đang xử lý dữ liệu khi NSD nhấn vào nút "Tìm kiếm"
	this.statusSearch = function(){
		jQuery('img#isearching').show();
	}
	//Ẩn image thể hiện trạng thái đang xử lý dữ liệu khi NSD nhấn vào nút "Tìm kiếm"
	this.successSearch = function(){
		$('img#isearching').hide();	
	}
}
//Phương thức load dữ liệu
Public.prototype.ldmod = function(){
	if(this.loadding) return false;
	this.loadding = true;
	var dirxml = $('#filexml').val();
	if(typeof(efyxmllisttype) === 'undefined'){
        efyxmllisttype = new efyXml(dirxml);
    }
	var url = this.urlPath + '/record';
	this.statusSearch();
	var data = $('form#frmAllListType').serialize();
	$.ajax({
		url: url,
		type: "POST",
		dataType: 'json',
		//cache: true,
		data:data,
		success: function(arrResult){
			efyxmllisttype.exportTable(arrResult,'PK_LISTTYPE',$('div#table-container'),$('#txtSearch').val(),'frmAllListType');
			myClassPublic.successSearch();
			//Phan trang du lieu
			var sdocpertotal = "Danh sách này không có hồ sơ nào";
			if(arrResult.length >0){
				var iNumberRecord = arrResult[0]['C_TOTAL_RECORD'];
				var numberRow = arrResult.length;
				$('#hdn_order').val(iNumberRecord +1);
				if(numberRow > 0)
					sdocpertotal ="Danh sách có " +numberRow + "/" + iNumberRecord + " hồ sơ.";
				var data = {iTotalRecord: iNumberRecord,
						iPage: $('form#frmAllListType #hdn_current_page').val(),
						FuntionName:'pagingModal',
						iRowOnPage: $('#hdn_record_number_page').val()
				}
				$.ajax({
					url: baseUrl + "/public/ajax/ajax.php",
					type: "POST",
					cache: true,
					data:data,
					success: function(string){
						$('td#generateStringNumberPage').html(string);
					}
				});
			}
			$('#sdocpertotal').html(sdocpertotal);			
			$('div#IndexFrm').show();
			$('div#UpdateFrm').hide();
			myClassPublic.loadding = false;
			scrollTop(1);
			shortcut.remove('Enter');
			shortcut.add("Enter",function() {
				myList.ldmod();
			});
		}
	});

}
/**
 * Create: Truongdv
 * Date: 17/12/2012
 * Function: Them moi
 */
Public.prototype.add = function(){
	var url = this.urlPath + '/add';
	this.statusLoad('Đang tải dữ liệu...');
	var data ={hdn_order:$('#hdn_order').val()};
	$.ajax({
		url: url,
		type: "POST",
		data: data,
		// cache: true,
		//dataType: "json",		
		success: function(string){
			var currentState = { content: string};
			loading = false;
			$('div#IndexFrm').hide();
			$('div#UpdateFrm').html(string);
			$('div#UpdateFrm').show();
			if (history.pushState) history.pushState(currentState, "", url);
			//Create evens
			myClassPublic.loadUpdatefrm();
			shortcut.remove('Enter');
			myClassPublic.successLoad();
		}
	});	
	 return !history.pushState;
}
/**
 * Create: Truongdv
 * Date: 17/12/2012
 * Function: Luu ho so
 */
Public.prototype.save = function(act_event){
	if(this.loadding) return false;
	this.loadding = true;
	var url = this.urlPath + '/save';
	var myClass = this,urlUpdate = this.urlPath + '/add';
	if(verify(document.forms['frmAddListType'])){
		var data = $("form#frmAddListType").serialize();
		$.ajax({
			url: url,
			type: "POST",
			data: data,
			// cache: true,		
			success: function(string){
				if (act_event==='next') {
					var hdn_order = parseInt($('#hdn_order').val()),C_ORDER = parseInt($('#C_ORDER').val());
					if(C_ORDER >=  hdn_order){
						hdn_order = hdn_order +1;
						$('#hdn_order').val(hdn_order);
					}
					var datanext ={hdn_order:hdn_order};
					$("div#UpdateFrm").load(urlUpdate,datanext,function(){
						myClass.loadUpdatefrm();
					});
				}else{
					myClass.ldmod();
					$('div#IndexFrm').show();
					$('div#UpdateFrm').hide();
				}
				myClass.loadding = true;
			},
			error: function (){
				jAlert('Có lỗi xảy ra', 'Error Dialog');
			}
		});			
	}
}
//Phương thức sửa
Public.prototype.edit = function(){
	var PK_LISTTYPE ='';
	var count = 0;
	$('form#frmAllListType input[type=checkbox][name="chk_item_id"]:checked').each(function(){
		PK_LISTTYPE = $(this).val();
		count++;
	});
	if(count == 0){
		jAlert('Bạn chưa chọn một đối tượng nào để sửa!', 'Edit Dialog');
		return false;
	}
	if(count >1){
		jAlert('Bạn chỉ được chọn một đối tượng để sửa!', 'Edit Dialog');
		return false;
	}
	var url = this.urlPath + '/edit';
	//Sửa
	var data = {PK_LISTTYPE : PK_LISTTYPE};
	this.statusLoad('Đang tải dữ liệu...');
    $.ajax({
		url: url,
		type: "POST",
		data: data,
		// cache: true,		
		success: function(string){
			$('div#IndexFrm').hide();
			$('div#UpdateFrm').html(string);
			$('div#UpdateFrm').show();
			var currentState = {html: string};
			// nếu trình duyệt hỗ trợ thì lưu lại trạng thái hiện tại và chuyển url
			if (history.pushState) history.pushState(currentState, currentState, url);
			//Create evens
			myClassPublic.loadUpdatefrm();
			shortcut.remove('Enter');
			myClassPublic.successLoad();
		}
	});
    return !history.pushState;
}

//Phương thức view
Public.prototype.view = function(){
	alert('view');
}
//Phương thức xóa
Public.prototype.deleteRecord=function(){
	//hdn_object_id_list
	var url = this.urlPath + '/delete';
	var listId ='',myClass = this;
	$('form#frmAllListType input[type=checkbox][name="chk_item_id"]:checked').each(function(){
		listId += $(this).val() + ',';
	});
	listId = listId.substr(0,listId.length - 1);
	if(listId ==''){
		jAlert('Bạn chưa chọn đối tượng nào', 'Delete Dialog');
		return false;
	}
	jConfirm('Bạn có chắc chắn muốn xóa những hồ sơ này?', 'Xóa hồ sơ', function(r) {
	    if(r){
			var arrdata = {hdn_object_id_list : listId};
			$.ajax({
				url: url,
				type: "POST",
				data: arrdata,
				// cache: true,
				success: function(string){
					myClass.ldmod();
					/*if(string =='OK'){
						$('form#frmAllListType input[type=checkbox][name="chk_item_id"]:checked').each(function(){
							$(this).parent().parent().remove();
						});
					}else{
						jAlert(string,'Error Delete');
					}*/
				}
			});		
		}
	});
}
//Phương thức xóa
Public.prototype.exportcachefile=function(){
	showloadpage();
	$.ajax({url: this.urlPath + '/exportcachefile',type: "POST",success:function(){
		hideloadpage();
		jAlert('Đã xuất file thành công!', 'Thành công!');
	}});
}
Public.prototype.back=function(){
	var myClass = this;
	shortcut.remove('Enter');
	shortcut.add("Enter",function() {
		myClass.ldmod();
	});
	$('div#IndexFrm').show();
	$('div#UpdateFrm').hide();
	myClass.ldmod();
	scrollTop(1);
}
Public.prototype.loadIndexfrm = function(){
	//Tìm kiếm
	$('.clsearch').click(function(){
		myPublic.ldmod();
	})
	//Thêm
	$('.cladd').click(function(){
		myPublic.add();
	})
	//Sửa
	$('.cledit').click(function(){
		myPublic.edit();
	})
	//Xóa
	$('.cldelete').click(function(){
		myPublic.deleteRecord();
	})
	//Xuất xml
	$('.clxml').click(function(){
		myPublic.exportcachefile();
	})
	shortcut.add("Enter",function() {
		myPublic.ldmod();
	});
}

Public.prototype.loadUpdatefrm = function(){
	$("#C_CODE").focus();
	$('.clsave').click(function(){
		myPublic.save($(this).attr('act_event'));
	})
	$('.clback').click(function(){
		myPublic.back();
	})
}
Public.prototype.changeNumberRowPerPageModal = function(obj){
	document.getElementById('hdn_record_number_page').value = obj.value;
	document.getElementById('hdn_current_page').value = 1;
	this.ldmod();
}
function gotopageModal(num){
	document.getElementById('hdn_record_number_page').value = $('#cbo_nuber_record_page').val();
	document.getElementById('hdn_current_page').value = num;	
	myPublic.ldmod(); 
}